//package com.lx.javasunmmrize.thread;
//
///**
// * @Description TODO 测试死锁案例, 需要重新写
// * @Author lx
// * @Date 2021/3/1 22:58
// **/
//public class DeadLockDemo {
//
//    public static void main(String[] args) {
//        DThread dt1 = new DThread(0, "布加迪");
//        DThread dt2 = new DThread(1, "保时捷");
//
//        //问题:2个线程都持有同一个对象, 即都持有car1
//        dt1.start();
//        dt2.start();
//    }
//
//}
//
//class DThread extends Thread {
//
//    String car1;
//    String car2 = "保时捷";
//    int flag;//标识
//
//    DThread(int flag, String car) {
//        this.flag = flag;
//        this.car1 = car;
//
//    }
//
//    @Override
//    public void run() {
//        if (flag == 0) {
//            //持有car1的锁
//            synchronized (car1) {
//                System.out.println("持有car1的锁");
//
//                try {
//                    Thread.sleep(2000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//
//
//            }
//
//            //一秒后要获取car2的锁
//            synchronized (car2) {
//                System.out.println("持有car2的锁");
//            }
//
//        } else {
//            //持有car1的锁
//            synchronized (car2) {
//                System.out.println("持有car2的锁");
//
//                try {
//                    Thread.sleep(1000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//
//
//            }
//
//            //2秒后要获取car2的锁
//            synchronized (car1) {
//                System.out.println("持有car1的锁");
//            }
//        }
//    }
//}